package com.ian.tag.array;

/**
 * 给定一个排序数组和一个目标值，在数组中找到目标值，并返回其索引。如果目标值不存在于数组中，返回它将会被按顺序插入的位置。
 * <p>
 * 你可以假设数组中无重复元素。
 */
public class SearchInsert {
    public int searchInsert(int[] nums, int target) {

        for (int i = 0; i < nums.length; i++) {

            if (nums[i] == target)
                return i;

            if (nums[i] > target)
                return i;

        }

        return nums.length;
    }


    public int searchInsert2(int[] nums, int target) {

        int left = 0;
        int right = nums.length - 1;

        if (nums[right] < target)
            return nums.length;

        while (left <= right) {

            int mid = (left + right) >>> 1;

            if (nums[mid] == target) {
                return mid;
            } else if (nums[mid] < target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        return left;

    }

    public int searchInsert3(int[] nums, int target) {

        int left = 0;
        int right = nums.length - 1;

        if (nums[right] < target)
            return nums.length;

        while (left <right) {

            int mid = (left + right) >>> 1;


            if (nums[mid] < target) {
                left = mid + 1;
            } else {
                right = mid ;
            }
        }
        return left;

    }




}
